<?php
	/** sous fonctionnalité de gestion des cartons d'un matche
	 * @author Sebastian Mosser
	 */

class sfManageWarnings extends aSubFeature {


	public function __construct() {
		  $this->_acl = new AccessControlList(); 
      $this->_acl->setGranted(1, AccessControlList::$JUST_ME); // Entraineur
      $this->_acl->setGranted(3); // Secretariat
      $this->_acl->setGranted(7); // Administrateur système
		}


	public function check($teamId) {
	
		$perm = $this->_acl->isExposable(Login::getGroups());
		$aTeam = Team::read($teamId);
		
		if ($perm == AccessControlList::$JUST_ME) {
			if (! $aTeam->canEdit(Login::getLoginId())) {
				$page = <<<EOS
<h1> Une erreur est survenue ! </h1>
<div align="center">
<p> <span class="error">Vous n'êtes pas autorisé a faire des modifications dans cette équipe car vous n'en êtes pas l'administrateur.</span></p>
</div>
<p> Si vous pensez qu'il s'agit d'une erreur, contactez le secrétariat du club qui pourra vous autoriser à y acceder.</p>
<p> Pour pouvoir modifier une équipe, vous devez être déclaré : 
<ul>
  <li> Administrateur de l'équipe </li>
  <li> Administrateur de catégorie </li>
  <li> Membre du groupe <code> Secretariat </li>
  <li> Membre du groupe <code> Administrateur Système </code> </li>
</ul>
EOS;
				return $page;
			}
		}
		return True;
	}

	protected function run() {
		
		$id = PropRetriever::getProp($_POST,"id");
		if ($id == "")
			$id = PropRetriever::getProp($_GET,"id");
		
		try {
			$aMatche = Matche::read($id);
			$teamId = $aMatche->getTeamId();
		}
		catch(Exception $e) {
			$ans  = "<h1> Une erreur est survenue ! </h1>";
			$ans .= "<div align=\"center\"> <span class=\"error\">";
			$ans .= "Le match demandé n'existe pas !";
			$ans .= "</span></div>";
			return $ans;
		}
		
		$c = $this->check($teamId);
		if ($c === True)
			return $this->process($aMatche,$id);
		else
			return $c;
	}
	
	// $aMatche est une instance de Matche, mais pas une rèf.
	private function process($aMatche,$id) {
		$action = PropRetriever::getProp($_POST,"action");
		if ($action == "add")
			return $this->addWarningInMatche($aMatche, $id);
		else if ($action == "delete")
			return $this->deleteWarningInMatche($aMatche,$id);
		else
			return $this->displayform($aMatche,$id);
	}
	

	private function deleteWarningInMatche($aMatche, $id) {
		$warningId = PropRetriever::getProp($_POST,"warningId");
		$aMatche->delWarning($warningId);
		$aMatche->update();

		return $this->displayForm($aMatche,$id,
															"Supression effectuée avec succès !");
	}
	
	// $aMatche est une instance de matche 
	private function addWarningInMatche($aMatche, $id) {
		$playerId     = PropRetriever::getProp($_POST,"player");
		$type         = PropRetriever::getInt($_POST,"type");
		$minute       = PropRetriever::getInt($_POST,"minute");
		$comment      = PropRetriever::getProp($_POST,"comment");
		
		$aMatche->addWarning($playerId,$type, $minute, $comment);
		$aMatche->update();
		$aMatche = Matche::read($id);
		return $this->displayForm($aMatche, $id, "Ajout effectué avec succès");
	}
	
	private function displayForm($aMatche,$id,$text = "") {
		$matcheResume = $aMatche->displayShort();
		$playerOptions = $aMatche->getPlayersAsList(False);
		$typeOptions = WarningType::getAsList();
		
		$warningForm = "";
		$warningContent = "";
		$warnings = $aMatche->getWarnings();
		$warningArray = array();
		
		foreach($warnings as $k => $v) {
			$minute = PropRetriever::getInt($v,"minute");
			$player = PropRetriever::getProp($v,"player");
			$aMember = Member::read($player);
			$name = $aMember->displayName();
			$type = PropRetriever::getProp($v,"type");
			$type = WarningType::$WARNINGS[$type];
			$comment = nl2br(PropRetriever::getProp($v,"comment"));
			if ($comment == "")
				$comment = "--";
			$table = <<<EOS
<tr> <td> ${minute}' </td> <td> ${name} </td> <td> ${type} </td> 
		 <td> 
		 	 <form method="post">
		 	 	 <input type="hidden" name="action" value="delete" />
		 		 <input type="hidden" name="id" value="${id}" />
		 		 <input type="hidden" name="warningId" value="${k}" />
		 		 <input type="submit" value="Supprimer" class="edit"/>
		 	 </form>
		 </td>
</tr>

<tr> <td> <strong> Commentaire : </strong> </td> 
		 <td colspan="3"> ${comment} </td> </tr>
EOS;
			$warningArray[$table] = $minute;
		}
		asort($warningArray);
		foreach($warningArray as $k => $v)
			$warningContent .= $k;
		
		if ($warningContent != "") {
			$warningForm = <<<EOS
<div align="center">
	<table class="resultset">
	<tr>
		<th> Minute </th> <th> Joueur </th> <th> Type de Carton</th>
		<th> Action </th>
	</tr>
		${warningContent}
	</table>
</div>
EOS;
		}
		else {
			$warningForm = <<<EOS
<div align="center">
	<span class="error">
		Aucun cartons n'a été renseigné pour ce matche.
	</span>
</div>
EOS;
		}
		
		$resultAction = "";
		if ($text != "") {
			$resultAction = "<h2> Résultat de l'action demandée </h2>";
			$resultAction .= "<div align=\"center\"><span class=\"error\">";
			$resultAction .= $text;
			$resultAction .= "</span></div>";
		}
		
		$returnButton = sfManageAMatche::getReturnButton($id);
		
		$page = <<<EOS
${matcheResume}
<br />
${returnButton}
<h1> Ajouter un carton </h1>
<div align="center">
<form method="post" accept-charset="utf-8">
<table>
<tr>
<td>
  <fieldset>
		<legend> Infos Techniques </legend>
		
		<label> 
			<span>Joueur : </span>
			<select name="player" class="edit">
			${playerOptions}
			</select>
			&nbsp; &nbsp;
		</label>
		<br />
		
		<label> 
			<span>Type : </span>
			<select name="type" class="edit">
			${typeOptions}
			</select>
			&nbsp; &nbsp;
		</label>
		<br />

		<label> 
			<span>Minute de Jeu : </span>
			<input type="text" name="minute" class="edit" />
			&nbsp; &nbsp;
		</label>
		<br />
	</fieldset>
</td>

<td> &nbsp; &nbsp; </td>

<td>
<fieldset>
<legend> Commentaire Personnel </legend>
<label>
<div align="left">
Entrez un commentaire sur le carton : 
</div>
<textarea name="comment" class="edit" rows="4"> 
</textarea>

</label>
</fieldset>
</td>
</tr>
<tr>
<td colspan="3" align="center">
<br />
		<input type="hidden" name="id" value="$id" />
		<input type="hidden" name="action" value="add" />
		<input type="submit" value="Ajouter le Carton" class="edit" />
</td>
</tr>
</table>
</form>
</div>

${resultAction}
<h1> Cartons Renseignés </h1>
${warningForm}
EOS;
		return $page;
	
	}
	
	
}

?>